Repository navigation
Conversation
commit: |
reeceyang
force-pushed
the
storage-in-mutations
branch
from
October 21, 2026 18:06
b374fd7 to
158c664
Compare
reeceyang
force-pushed
the
storage-in-mutations
branch
3 times, most recently
from
November 4, 2026 00:40
62dfe7d to
f62c50c
Compare
reeceyang
force-pushed
the
storage-in-mutations
branch
from
November 6, 2026 04:42
f62c50c to
458fbb3
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Preserve oversized queued query, mutation, and action step results in file storage before recording the step failure. The blob, oversized-value record, and failed step commit together, so preservation cannot race with workflow cleanup. Results still fail above the existing 800 KiB threshold; the error includes the step ID and a mutation call for retrieving the full value.
Create the blob and compare
Blob.sizewithctx.meta.getTransactionMetrics().fileWriteBytes.remaining, also checkingfilesWritten.remaining. These are server-reported budgets, with no hardcoded storage limits. If the value cannot fit, record a terminal step failure explaining that it was not preserved. There is no scheduled preservation or pending state, and unrelated storage errors propagate.Oversized events retain their existing failure-and-preview behavior without file preservation, whether sent before or after the workflow starts waiting. Inline results, workflow final returns, and oversized arguments remain outside this feature. Add paginated list and mutation read/remove APIs, cleanup of stored files, and README documentation.
This PR is standalone on
mainand incorporates the storage work from #242. Requires released Convex 1.48 (convex@1.48.0in development,^1.48.0as a peer). Tests use releasedconvex-test@0.0.67with native mutation-storage metrics and limit enforcement. Budget tests configure actual transaction limits, without metrics mocks or storage syscall adapters. Live probes also validate backend accounting and limits.Validation:
Blob.size. It also verified a storage-limit rejection can be caught without consuming storage budget or preventing a smaller write from committing. HTTP downloads return 200; test storage is empty after cleanup.